﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LifeSoft.Controller;
using LifeSoft.BusinessObject;
using System.Text.RegularExpressions;
using LifeSoftLibary;

namespace LifeSoft.GUI
{
    public partial class frmSetupBaseUnit : Form
    {
        private SetupBaseInfo frm;
        private SetupSystemCtr ctrlSetup;
        Regex regexZipcode = new Regex(@"^(\d{5}-\d{4}|\d{5}|\d{9})$|^([a-zA-Z]\d[a-zA-Z] \d[a-zA-Z]\d)$");
        Regex regexEmail = new Regex(@"^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$");
        Regex regexUrl = new Regex(@"^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$");
        Regex regexPhoneNumber = new Regex(@"^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$");
        public frmSetupBaseUnit()
        {
            InitializeComponent();
        }

        private void btSave_Click(object sender, EventArgs e)
        {
            this.superValidator1.Enabled = true;
            
            ErrorProvider errorProvider = new ErrorProvider();
            errorProvider.Clear();
            
            if (txtBaseUnitName.Text == null || txtBaseUnitName.Text.Trim().Equals(""))
            {
                MessageBox.Show("Tên đơn vị không được để trống!");
                superTabControl1.SelectedTab = tabInfo;
                txtBaseUnitName.Focus();
            }
            else if (txtBaseTaxCode.Text == null || txtBaseTaxCode.Text.Trim().Equals(""))
            {
                MessageBox.Show("Mã số thuế không được để trống");
                superTabControl1.SelectedTab = tabInfo;
                txtBaseTaxCode.Focus();
            }
            else if (txtBankName.Text == null || txtBankName.Text.Trim().Equals(""))
            {
                MessageBox.Show("Tên ngân hàng không được để trống!");
                superTabControl1.SelectedTab = tabInfo;
                txtBankName.Focus();
            }
            else if (txtBankAccountNumber.Text == null || txtBankAccountNumber.Text.Trim().Equals(""))
            {
                MessageBox.Show("Số tài khoản không được để trống!");
                superTabControl1.SelectedTab = tabInfo;
                txtBankAccountNumber.Focus();
            }
            else if (txtBranchName.Text == null || txtBranchName.Text.Trim().Equals(""))
            {
                MessageBox.Show("Tên chi nhánh không được để trống");
                superTabControl1.SelectedTab = tabInfo;
                txtBranchName.Focus();
            }
            else if (txtLastName.Text == null || txtLastName.Text.Trim().Equals(""))
            {
                MessageBox.Show("Họ và tên không được để trống!");
                superTabControl1.SelectedTab = tabUser;
                txtLastName.Focus();
            }
            else if (txtFirstName.Text == null || txtFirstName.Text.Trim().Equals(""))
            {
                MessageBox.Show("Họ và tên không được để trống!");
                superTabControl1.SelectedTab = tabUser;
                txtFirstName.Focus();
            }
            else if (txtDepartmentName.Text == null || txtDepartmentName.Text.Trim().Equals(""))
            {
                MessageBox.Show("Tên phòng ban không được để trống!");
                superTabControl1.SelectedTab = tabUser;
                txtDepartmentName.Focus();
            }
            else if (txtPositionName.Text == null || txtPositionName.Text.Trim().Equals(""))
            {
                MessageBox.Show("Tên chức vụ không được để trống!");
                superTabControl1.SelectedTab = tabUser;
                txtPositionName.Focus();
            }
            else if (txtUserName.Text == null || txtUserName.Text.Trim().Equals(""))
            {
                MessageBox.Show("Tên đăng nhập không được để trống!");
                superTabControl1.SelectedTab = tabAccount;
                txtUserName.Focus();
            }
            else if (txtPassword.Text == null || txtPassword.Text.Trim().Equals(""))
            {
                MessageBox.Show("Mật khẩu không được để trống!");
                superTabControl1.SelectedTab = tabAccount;
                txtPassword.Focus();
            }
            else if (!txtPassword.Text.Trim().Equals(txtForgotPassword.Text))
            {
                MessageBox.Show("Mật khẩu không khớp vui lòng nhập lại!");
                superTabControl1.SelectedTab = tabAccount;
                txtPassword.Text = "";
                txtForgotPassword.Text = "";
            }
            else if (txtBaseEmail.Text != "" && !regexEmail.IsMatch(txtBaseEmail.Text))
            {
                MessageBox.Show("Không đúng định dạng Email!");
                superTabControl1.SelectedTab = tabInfo;
                txtBaseEmail.Focus();
            }
            else if (txtBaseWebsite.Text != "" && !regexUrl.IsMatch(txtBaseWebsite.Text))
            {
                MessageBox.Show("Không đúng định dạng Url!");
                superTabControl1.SelectedTab = tabInfo;
                txtBaseWebsite.Focus();
            }
            else if (txtBankEmail.Text != "" && !regexEmail.IsMatch(txtBankEmail.Text))
            {
                MessageBox.Show("Không đúng định dạng Email!");
                superTabControl1.SelectedTab = tabInfo;
                txtBankEmail.Focus();
            }
            else if (txtBankWebsite.Text != "" && !regexUrl.IsMatch(txtBankWebsite.Text))
            {
                MessageBox.Show("Không đúng định dạng Url!");
                superTabControl1.SelectedTab = tabInfo;
                txtBankWebsite.Focus();
            }
            else if (txtUserEmail.Text != "" && !regexEmail.IsMatch(txtUserEmail.Text))
            {
                MessageBox.Show("Không đúng dạng Email!");
                superTabControl1.SelectedTab = tabUser;
                txtUserEmail.Focus();
            }
            else if (txtUserWebsite.Text != "" && !regexUrl.IsMatch(txtUserWebsite.Text))
            {
                MessageBox.Show("Không đúng định dạng Url!");
                superTabControl1.SelectedTab = tabUser;
                txtUserWebsite.Focus();
            }
            else
            {
                frm = new SetupBaseInfo();
                frm.baseUnitCode = "";
                frm.baseUnitName = txtBaseUnitName.Text;
                frm.baseUnitCreateDate = DateTime.Now;
                frm.baseUnitAddress = txtBaseAddress.Text;
                if (txtBasePhone.Text != "")
                {
                    frm.baseUnitPhone = long.Parse(txtBasePhone.Text);
                }
                if (txtBaseFax.Text != "")
                {
                    frm.baseUnitFax = long.Parse(txtBaseFax.Text);
                }
                frm.baseUnitEmail = txtBaseEmail.Text;
                frm.baseUnitWebsite = txtBaseWebsite.Text;
                if (txtBaseTaxCode.Text != "")
                {
                    frm.baseUnitTaxCode = long.Parse(txtBaseTaxCode.Text);
                }
                frm.accountCode = txtBankAccountNumber.Text;
                frm.bankCode = "";
                frm.bankName = txtBankName.Text;
                frm.bankAddress = txtBankAddress.Text;
                if (txtBankPhone.Text != "")
                {
                    frm.bankPhone = long.Parse(txtBankPhone.Text);
                }
                if (txtBankFax.Text != "")
                {
                    frm.bankFax = long.Parse(txtBankFax.Text);
                }
                frm.bankEmail = txtBankEmail.Text;
                frm.bankWebsite = txtBankWebsite.Text;
                frm.branchCode = "";
                frm.branchName = txtBranchName.Text;
                frm.branchAddress = txtBranchAddress.Text;
                if (txtBranchPhone.Text != "")
                {
                    frm.branchPhone = long.Parse(txtBranchPhone.Text);
                }
                if (txtBranchFax.Text != "")
                {
                    frm.branchFax = long.Parse(txtBranchFax.Text);
                }
                frm.lastName = txtLastName.Text;
                frm.firstName = txtFirstName.Text;
                frm.addressProvisitonally = txtAddressProvisional.Text;
                if (txtIndentityCard.Text != "")
                {
                    frm.identityCard = long.Parse(txtIndentityCard.Text);
                }
                if (txtDateIssue.Text != "")
                {
                    frm.dateIssue = DateTime.Parse(txtDateIssue.Text);
                }
                frm.organIssue = txtOrganIssue.Text;
                if (txtBirthDay.Text != "")
                {
                    frm.birthDay = DateTime.Parse(txtBirthDay.Text);
                }
                frm.addressPermanent = txtAddressPermanent.Text;
                if (txtUserPhone.Text != "")
                {
                    frm.userPhone = long.Parse(txtUserPhone.Text);
                }
                if (txtUserFax.Text != "")
                {
                    frm.userFax = long.Parse(txtUserFax.Text);
                }
                frm.userEmail = txtUserEmail.Text;
                frm.userWebsite = txtUserWebsite.Text;
                frm.userName = txtUserName.Text;
                frm.password = EncryptMD5.GetMD5Hash(txtPassword.Text);
                frm.departmentCode = "";
                frm.departmentName = txtDepartmentName.Text;
                if (txtDepartmentPhone.Text != "")
                {
                    frm.departmentPhone = long.Parse(txtDepartmentPhone.Text);
                }
                if (txtDepartmentFax.Text != "")
                {
                    frm.departmentFax = long.Parse(txtDepartmentFax.Text);
                }
                frm.departmentDescription = txtDepartmentDescription.Text;
                frm.positionName = txtPositionName.Text;
                frm.positionDescription = txtPositionDescription.Text;

                DialogResult result = MessageBox.Show("Bạn có chắc muốn ghi lại thông tin trên?", "Có/Không?",
                                                        MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == DialogResult.Yes)
                {
                    ctrlSetup = new SetupSystemCtr();
                    Boolean checkSave = ctrlSetup.saveSetupSystem(frm);
                    if (checkSave == true)
                    {
                        MessageBox.Show("Ghi ghi dữ liệu thành công!");
                        this.Close();
                        frmMain main = new frmMain();
                        main.login_Click(sender, e);
                    }
                    else
                    {
                        MessageBox.Show("Ghi dữ liệu không thành công!");
                    }
                }
            }
        }

        private void btEdit_Click(object sender, EventArgs e)
        {

        }

        private void btHelp_Click(object sender, EventArgs e)
        {

        }

        private void txtIndentityCard_TextChanged(object sender, EventArgs e)
        {
            txtIndentityCard.Text = ValidateUtils.checkNum(txtIndentityCard.Text);
        }

        private void txtBasePhone_TextChanged(object sender, EventArgs e)
        {
            txtBasePhone.Text = ValidateUtils.checkNum(txtBasePhone.Text);
        }

        private void txtBaseFax_TextChanged(object sender, EventArgs e)
        {
            txtBaseFax.Text = ValidateUtils.checkNum(txtBaseFax.Text);
        }

        private void txtBaseTaxCode_TextChanged(object sender, EventArgs e)
        {
            txtBaseTaxCode.Text = ValidateUtils.checkNum(txtBaseTaxCode.Text);
        }

        private void txtBankPhone_TextChanged(object sender, EventArgs e)
        {
            txtBankPhone.Text = ValidateUtils.checkNum(txtBankPhone.Text);
        }

        private void txtBankFax_TextChanged(object sender, EventArgs e)
        {
            txtBankFax.Text = ValidateUtils.checkNum(txtBankFax.Text);
        }

        private void txtBankAccountNumber_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtBranchPhone_TextChanged(object sender, EventArgs e)
        {
            txtBranchPhone.Text = ValidateUtils.checkNum(txtBranchPhone.Text);
        }

        private void txtBranchFax_TextChanged(object sender, EventArgs e)
        {
            txtBranchFax.Text = ValidateUtils.checkNum(txtBranchFax.Text);
        }

        private void txtUserPhone_TextChanged(object sender, EventArgs e)
        {
            txtUserPhone.Text = ValidateUtils.checkNum(txtUserPhone.Text);
        }

        private void txtUserFax_TextChanged(object sender, EventArgs e)
        {
            txtUserFax.Text = ValidateUtils.checkNum(txtUserFax.Text);
        }

        private void txtDepartmentFax_TextChanged(object sender, EventArgs e)
        {
            txtDepartmentFax.Text = ValidateUtils.checkNum(txtDepartmentFax.Text);
        }

        private void txtDepartmentPhone_TextChanged(object sender, EventArgs e)
        {
            txtDepartmentPhone.Text = ValidateUtils.checkNum(txtDepartmentPhone.Text);
        }
    }
}
